
/*
'===============================================================================
'  Generated From - BLL_Component_Partial_Core.vbgen
'  
'  This object is partial class component representing a table in a database. It
'  contains core data access methods. Other partial classes should be used for 
'  implementing custom business logic. This class can be regenerated many times.
'  
'  Do not write custom business logic in this class as it will be overwritten 
'  next time the class is generated.
'
'  Version: 1.0
'  Date:	30/01/06
'  Summary: SelectOne, SelectAll, SelectAllWForeignKey, Insert, Update, Delete,
'  			DeleteAllWForeignKey, class for sorting.
'===============================================================================
*/
using System;
using System.ComponentModel;
using System.Data;
using System.Collections.Generic;

namespace PlacementManager
{
    [DataObjectAttribute]
	public partial class AddressComponent
    {
        
		/// <summary>
        /// Default constructor.
        /// </summary>
		public AddressComponent()
        {

        }
		
		/// <summary>
        /// Selects one record from the database table using the primary key.
        /// </summary>
        /// <returns>An object of a type representing a row in the database table.</returns>
		[DataObjectMethodAttribute(DataObjectMethodType.Select, true)]
		public Address SelectOne(int AddressId)
        {  
			PlacementManager.DAL.Address_DAL o = new PlacementManager.DAL.Address_DAL();
			o.AddressId = AddressId;
			DataTable dt = o.SelectOne().Tables[0];
			
			if (dt.Rows.Count > 0)
            {
                DataRow row = dt.Rows[0];
				PlacementManager.Address AddressToReturn = new PlacementManager.Address((int)row["AddressId"], (string)row["Address1"], (string)row["Address2"], (string)row["Street"], (string)row["City"], (string)row["PostCode"], (int)row["StateId"], (int)row["CountryId"], (bool)row["IsPostal"], (double)row["Latitude"], (double)row["Longitude"], (bool)row["IsActive"], (DateTime)row["DateCreated"], (string)row["CreatedBy"], (DateTime)row["DateUpdated"], (string)row["UpdatedBy"]);
				return AddressToReturn;
			}
			else
			{
				PlacementManager.Address AddressToReturnEmpty = new PlacementManager.Address();
                return AddressToReturnEmpty;
			}
        }
		
		/// <summary>
        /// Selects all records from the database table.
        /// </summary>
        /// <returns>A collection of objects of a type representing a row in the database table.</returns>
		[DataObjectMethodAttribute(DataObjectMethodType.Select, true)]
		public List<Address> SelectAll(string sortExpression)
        {
            List<Address> listAddress = new List<Address>();
            PlacementManager.DAL.Address_DAL o = new PlacementManager.DAL.Address_DAL();

            DataSet ds = o.SelectAll();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                listAddress.Add(new Address((int)row["AddressId"], (string)row["Address1"], (string)row["Address2"], (string)row["Street"], (string)row["City"], (string)row["PostCode"], (int)row["StateId"], (int)row["CountryId"], (bool)row["IsPostal"], (double)row["Latitude"], (double)row["Longitude"], (bool)row["IsActive"], (DateTime)row["DateCreated"], (string)row["CreatedBy"], (DateTime)row["DateUpdated"], (string)row["UpdatedBy"]));
            }
			
			if (sortExpression == string.Empty)
            {
                sortExpression = "DateCreated desc";
            }

            listAddress.Sort(new AddressComparer(sortExpression));
            return listAddress;
        }
	
		/// <summary>
        /// Selects all records from the database table based on a foreign key.
        /// </summary>
        /// <returns>A collection of objects of a type representing a row in the database table.</returns>


		/// <summary>
        /// Inserts a new row into the datatable.
        /// </summary>
        /// <param name="o">An object of a datatype representing a row in the database table.</param>
        /// <returns>Boolean</returns>
		[DataObjectMethodAttribute(DataObjectMethodType.Insert, true)]
		public int Insert(Address o)
        {	
            PlacementManager.DAL.Address_DAL oAddress = new PlacementManager.DAL.Address_DAL();
			oAddress.Address1 = o.Address1;
			oAddress.Address2 = o.Address2;
			oAddress.Street = o.Street;
			oAddress.City = o.City;
			oAddress.PostCode = o.PostCode;
			oAddress.StateId = o.StateId;
			oAddress.CountryId = o.CountryId;
			oAddress.IsPostal = o.IsPostal;
			oAddress.Latitude = o.Latitude;
			oAddress.Longitude = o.Longitude;
			oAddress.IsActive = o.IsActive;
			oAddress.DateCreated = o.DateCreated;
			oAddress.CreatedBy = o.CreatedBy;
			oAddress.DateUpdated = o.DateUpdated;
			oAddress.UpdatedBy = o.UpdatedBy;

            return oAddress.Insert();
        }
		
		/// <summary>
        /// Inserts a new row into the datatable by passing parameters represneting each column.
        /// </summary>
        /// <returns>Boolean</returns>
		[DataObjectMethodAttribute(DataObjectMethodType.Insert, true)]
		public int Insert(string Address1, string Address2, string Street, string City, string PostCode, int StateId, int CountryId, bool IsPostal, double Latitude, double Longitude, bool IsActive, DateTime DateCreated, string CreatedBy, DateTime DateUpdated, string UpdatedBy)
        {
            PlacementManager.DAL.Address_DAL oAddress = new PlacementManager.DAL.Address_DAL();

			oAddress.Address1 = Address1;
			oAddress.Address2 = Address2;
			oAddress.Street = Street;
			oAddress.City = City;
			oAddress.PostCode = PostCode;
			oAddress.StateId = StateId;
			oAddress.CountryId = CountryId;
			oAddress.IsPostal = IsPostal;
			oAddress.Latitude = Latitude;
			oAddress.Longitude = Longitude;
			oAddress.IsActive = IsActive;
			oAddress.DateCreated = DateCreated;
			oAddress.CreatedBy = CreatedBy;
			oAddress.DateUpdated = DateUpdated;
			oAddress.UpdatedBy = UpdatedBy;

            return oAddress.Insert();
        }

		/// <summary>
        /// Updates a row in the database table based on the primary key.
        /// </summary>
        /// <param name="o">An object of a datatype representing a row in the database table.</param>
        /// <returns>Boolean</returns>
		[DataObjectMethodAttribute(DataObjectMethodType.Update, true)]
		public bool Update(Address o)
        {	
            PlacementManager.DAL.Address_DAL oAddress = new PlacementManager.DAL.Address_DAL();
			oAddress.AddressId = o.AddressId;
			oAddress.Address1 = o.Address1;
			oAddress.Address2 = o.Address2;
			oAddress.Street = o.Street;
			oAddress.City = o.City;
			oAddress.PostCode = o.PostCode;
			oAddress.StateId = o.StateId;
			oAddress.CountryId = o.CountryId;
			oAddress.IsPostal = o.IsPostal;
			oAddress.Latitude = o.Latitude;
			oAddress.Longitude = o.Longitude;
			oAddress.IsActive = o.IsActive;
			oAddress.DateCreated = o.DateCreated;
			oAddress.CreatedBy = o.CreatedBy;
			oAddress.DateUpdated = o.DateUpdated;
			oAddress.UpdatedBy = o.UpdatedBy;

            return oAddress.Update();
        }
		
		/// <summary>
        /// Updates a row in the database table based on the primary key by passing the values of each column as parameters.
        /// </summary>
        /// <returns>Boolean</returns>
		[DataObjectMethodAttribute(DataObjectMethodType.Update, true)]
		public bool Update(int AddressId, string Address1, string Address2, string Street, string City, string PostCode, int StateId, int CountryId, bool IsPostal, double Latitude, double Longitude, bool IsActive, DateTime DateCreated, string CreatedBy, DateTime DateUpdated, string UpdatedBy)
        {
            PlacementManager.DAL.Address_DAL oAddress = new PlacementManager.DAL.Address_DAL();

			oAddress.AddressId = AddressId;
			oAddress.Address1 = Address1;
			oAddress.Address2 = Address2;
			oAddress.Street = Street;
			oAddress.City = City;
			oAddress.PostCode = PostCode;
			oAddress.StateId = StateId;
			oAddress.CountryId = CountryId;
			oAddress.IsPostal = IsPostal;
			oAddress.Latitude = Latitude;
			oAddress.Longitude = Longitude;
			oAddress.IsActive = IsActive;
			oAddress.DateCreated = DateCreated;
			oAddress.CreatedBy = CreatedBy;
			oAddress.DateUpdated = DateUpdated;
			oAddress.UpdatedBy = UpdatedBy;

            return oAddress.Update();
        }
		
		/// <summary>
        /// Deletes one row in the database table.
        /// </summary>
        /// <param name="o">An object of a datatype representing a row in the database table.</param>
        /// <returns>Boolean</returns>
		[DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
		public bool Delete(Address o)
        {
            PlacementManager.DAL.Address_DAL oAddress_DAL = new PlacementManager.DAL.Address_DAL();
            oAddress_DAL.AddressId = o.AddressId;
            return oAddress_DAL.Delete();
        }
		
		/// <summary>
        /// Deletes one row in the database table by passing the primary key.
        /// </summary>
        /// <returns>Boolean</returns>
		[DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
		public bool Delete(int AddressId)
        {
            PlacementManager.DAL.Address_DAL oAddress_DAL = new PlacementManager.DAL.Address_DAL();
            oAddress_DAL.AddressId = AddressId;
            return oAddress_DAL.Delete();
        }
		
		/// <summary>
		/// Deletes all rows in a table based on a foreign key.
		/// </summary>
		/// <returns>Boolean</returns>

	}
	
	public class AddressComparer : IComparer<Address>
    {
        private string _sortColumn;
        private bool _reverse;

        public AddressComparer(string sortExpression)
        {
            _reverse = sortExpression.ToLowerInvariant().EndsWith(" desc");
            if (_reverse)
            {
                _sortColumn = sortExpression.Substring(0, sortExpression.Length - 5);
            }
            else
            {
                _sortColumn = sortExpression;
            }
        }

        public int Compare(Address a, Address b)
        {
            int retVal = 0;
            switch (_sortColumn)
            {
				case "AddressId":
					retVal = String.Compare(a.AddressId.ToString(), b.AddressId.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "Address1":
					retVal = String.Compare(a.Address1.ToString(), b.Address1.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "Address2":
					retVal = String.Compare(a.Address2.ToString(), b.Address2.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "Street":
					retVal = String.Compare(a.Street.ToString(), b.Street.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "City":
					retVal = String.Compare(a.City.ToString(), b.City.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "PostCode":
					retVal = String.Compare(a.PostCode.ToString(), b.PostCode.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "StateId":
					retVal = String.Compare(a.StateId.ToString(), b.StateId.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "CountryId":
					retVal = String.Compare(a.CountryId.ToString(), b.CountryId.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "IsPostal":
					retVal = String.Compare(a.IsPostal.ToString(), b.IsPostal.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "Latitude":
					retVal = String.Compare(a.Latitude.ToString(), b.Latitude.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "Longitude":
					retVal = String.Compare(a.Longitude.ToString(), b.Longitude.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "IsActive":
					retVal = String.Compare(a.IsActive.ToString(), b.IsActive.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "DateCreated":
					retVal = String.Compare(a.DateCreated.ToString(), b.DateCreated.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "CreatedBy":
					retVal = String.Compare(a.CreatedBy.ToString(), b.CreatedBy.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "DateUpdated":
					retVal = String.Compare(a.DateUpdated.ToString(), b.DateUpdated.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "UpdatedBy":
					retVal = String.Compare(a.UpdatedBy.ToString(), b.UpdatedBy.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;

            }
            return (retVal * (_reverse ? -1 : 1));
        }
    }
}
